﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows;
using System.Collections;

namespace LevelEditor.Controllers
{
    public static class AppCommands
    {
        public static RoutedCommand NewLevelCommand = new RoutedCommand("NewLevel", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.N, ModifierKeys.Control, "Ctrl+N") }));
        public static RoutedCommand OpenLevelCommand = new RoutedCommand("OpenLevel", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.O, ModifierKeys.Control, "Ctrl+O") }));
        public static RoutedCommand SaveLevelCommand = new RoutedCommand("SaveLevel", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.S, ModifierKeys.Control, "Ctrl+S") }));
        public static RoutedCommand SaveLevelAsCommand = new RoutedCommand("SaveLevelAs", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.S, (ModifierKeys.Control | ModifierKeys.Shift), "Ctrl+Shift+S") }));

        public static RoutedCommand CutGameSpriteCommand = new RoutedCommand("CutGameSprite", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.X, ModifierKeys.Control, "Ctrl+X") }));
        public static RoutedCommand CopyGameSpriteCommand = new RoutedCommand("CopyGameSprite", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.C, ModifierKeys.Control, "Ctrl+C") }));
        public static RoutedCommand PasteGameSpriteCommand = new RoutedCommand("PasteGameSprite", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.V, ModifierKeys.Control, "Ctrl+V") }));
        public static RoutedCommand DeselectGameSpriteCommand = new RoutedCommand("DeselectGameSprite", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.D, ModifierKeys.Control, "Ctrl+D") }));
        public static RoutedCommand DeleteGameSpriteCommand = new RoutedCommand("DeleteGameSprite", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.Delete, ModifierKeys.None, "Delete") }));

        public static RoutedCommand ToggleGridCommand = new RoutedCommand("ToggleGrid", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.G, ModifierKeys.Control, "Ctrl+G") }));

        public static RoutedCommand OpenAssetsManagerCommand = new RoutedCommand("OpenAssetsManager", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.A, ModifierKeys.Control, "Ctrl+A") }));
        public static RoutedCommand TogglePhysicEditorCommand = new RoutedCommand("TogglePhysicEditorCommand", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.B, ModifierKeys.Control, "Ctrl+B") }));
        public static RoutedCommand OpenSpriteSheetManagerCommand = new RoutedCommand("OpenSpriteSheetManager", typeof(UIElement));
        public static RoutedCommand OpenLevelSettingsCommand = new RoutedCommand("LevelSettings", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.L, ModifierKeys.Control, "Ctrl+L") }));
        public static RoutedCommand OpenAboutCommand = new RoutedCommand("OpenAbout", typeof(UIElement));

        public static RoutedCommand DebugLevelCommand = new RoutedCommand("DebugLevel", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.F5, ModifierKeys.None, "F5") }));
        public static RoutedCommand RunLevelCommand = new RoutedCommand("RunLevel", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.F6, ModifierKeys.None, "F6") }));
        public static RoutedCommand StopDebugCommand = new RoutedCommand("StopDebug", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.F5, ModifierKeys.Shift, "Shift+F5") }));

        public static RoutedCommand ExitCommand = new RoutedCommand("Exit", typeof(UIElement), new InputGestureCollection(new ArrayList { new KeyGesture(Key.Q, (ModifierKeys.Control), "Ctrl+Q") }));
    }
}
